package FirstStage.JiCheng;

// java中所有的类都是Object类的子类
// 但一个类只能直接继承一个父类
public class Extends {
    public static void main(String[] args) {
        // 创建子类构造器时，不管使用子类的哪个构造器，默认情况下都会去调用父类的无参构造器，如果父类没有提供无参构造器（被覆盖了）
        // 则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作，否则编译不通过
        Pupil pupil = new Pupil();
        pupil.name="小明";
        pupil.age=11;
        pupil.testing();
        pupil.setScore(50);
        pupil.showInfo();
        // 使用自定义的子类构造器时仍然调用父类的无参构造器
        Pupil pupil1 = new Pupil("杰克",13,70);
        pupil1.showInfo();
        Pupil pupil2 = new Pupil();
        // 如果子类有该属性，并且可以访问，则返回信息。如果子类没有，就看父类有没有这个属性（如果有该属性，并且可以访问，则返回信息）
        // 如果父类没有这就继续找上级父类，知道Object
        System.out.println(pupil2.name);

        Graduate graduate = new Graduate();
        graduate.name="金角大王";
        graduate.age=23;
        graduate.testing();
        graduate.setScore(100);
        graduate.showInfo();
    }
}
